<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::transport::sync_io::Native_socket_stream_acceptor Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;1.0.2</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport.html">transport</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html">sync_io</a></li><li class="navelem"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html">Native_socket_stream_acceptor</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::transport::sync_io::Native_socket_stream_acceptor Class Reference</div></div>
</div><!--header-->
<div class="contents">

<p><code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern counterpart to async-I/O-pattern <a class="el" href="classipc_1_1transport_1_1Native__socket__stream__acceptor.html" title="A server object that binds to a Shared_name and listens for incoming Native_socket_stream connect att...">transport::Native_socket_stream_acceptor</a>.  
 <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ipc::transport::sync_io::Native_socket_stream_acceptor:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor__inherit__graph.svg" width="310" height="131"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ipc::transport::sync_io::Native_socket_stream_acceptor:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor__coll__graph.svg" width="1342" height="819"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a6a635d61ded08e27d9ce97c38942d6d0"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a6a635d61ded08e27d9ce97c38942d6d0">Peer</a> = <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html#a850af22a95f27d8696b9b5bca15454b5">transport::Native_socket_stream::Sync_io_obj</a></td></tr>
<tr class="memdesc:a6a635d61ded08e27d9ce97c38942d6d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for type of target peer-socket objects targeted by <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a6a635d61ded08e27d9ce97c38942d6d0">More...</a><br /></td></tr>
<tr class="separator:a6a635d61ded08e27d9ce97c38942d6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed9d578ac0c49fe2df4d1812060d7937"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed9d578ac0c49fe2df4d1812060d7937">Sync_io_obj</a> = <a class="el" href="classipc_1_1transport_1_1Null__peer.html">Null_peer</a></td></tr>
<tr class="memdesc:aed9d578ac0c49fe2df4d1812060d7937"><td class="mdescLeft">&#160;</td><td class="mdescRight">You may disregard.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed9d578ac0c49fe2df4d1812060d7937">More...</a><br /></td></tr>
<tr class="separator:aed9d578ac0c49fe2df4d1812060d7937"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed1f13c93646250559c63790d1b30e87"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87">Async_io_obj</a> = <a class="el" href="classipc_1_1transport_1_1Native__socket__stream__acceptor.html">transport::Native_socket_stream_acceptor</a></td></tr>
<tr class="memdesc:aed1f13c93646250559c63790d1b30e87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Useful for generic programming, the async-I/O-pattern counterpart to <code>*this</code> type.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87">More...</a><br /></td></tr>
<tr class="separator:aed1f13c93646250559c63790d1b30e87"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a05f101c91a2c6b5c393b8036c5379939"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a05f101c91a2c6b5c393b8036c5379939">Native_socket_stream_acceptor</a> (flow::log::Logger *logger_ptr, const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a3f3c6aaad86a505961beb8e242fc1dff">absolute_name</a>, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a05f101c91a2c6b5c393b8036c5379939"><td class="mdescLeft">&#160;</td><td class="mdescRight">All notes from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API counterpart API apply.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a05f101c91a2c6b5c393b8036c5379939">More...</a><br /></td></tr>
<tr class="separator:a05f101c91a2c6b5c393b8036c5379939"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cdeeaf2aa630a6d91ffaae12ec57a25"><td class="memItemLeft" align="right" valign="top"><a id="a0cdeeaf2aa630a6d91ffaae12ec57a25" name="a0cdeeaf2aa630a6d91ffaae12ec57a25"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>~Native_socket_stream_acceptor</b> ()</td></tr>
<tr class="memdesc:a0cdeeaf2aa630a6d91ffaae12ec57a25"><td class="mdescLeft">&#160;</td><td class="mdescRight">All notes from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API counterpart API apply, except that no completion handler(s) are fired, even if an async-accept is currently outstanding. <br /></td></tr>
<tr class="separator:a0cdeeaf2aa630a6d91ffaae12ec57a25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f3c6aaad86a505961beb8e242fc1dff"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a3f3c6aaad86a505961beb8e242fc1dff">absolute_name</a> () const</td></tr>
<tr class="memdesc:a3f3c6aaad86a505961beb8e242fc1dff"><td class="mdescLeft">&#160;</td><td class="mdescRight">All notes from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API counterpart API apply.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a3f3c6aaad86a505961beb8e242fc1dff">More...</a><br /></td></tr>
<tr class="separator:a3f3c6aaad86a505961beb8e242fc1dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a063d1a4161fb0f9340567b202bdcd83f"><td class="memTemplParams" colspan="2">template&lt;typename Event_wait_func_t &gt; </td></tr>
<tr class="memitem:a063d1a4161fb0f9340567b202bdcd83f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a063d1a4161fb0f9340567b202bdcd83f">start_accept_ops</a> (Event_wait_func_t &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:a063d1a4161fb0f9340567b202bdcd83f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets up the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern interaction between <code>*this</code> and the user's event loop; required before <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> will work (as opposed to no-op/return <code>false</code>).  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a063d1a4161fb0f9340567b202bdcd83f">More...</a><br /></td></tr>
<tr class="separator:a063d1a4161fb0f9340567b202bdcd83f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0773dd896a3b607299ba7e5e153972c"><td class="memTemplParams" colspan="2">template&lt;typename Create_ev_wait_hndl_func &gt; </td></tr>
<tr class="memitem:ad0773dd896a3b607299ba7e5e153972c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad0773dd896a3b607299ba7e5e153972c">replace_event_wait_handles</a> (const Create_ev_wait_hndl_func &amp;create_ev_wait_hndl_func)</td></tr>
<tr class="memdesc:ad0773dd896a3b607299ba7e5e153972c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analogous to <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#abe6227dfa077571d6eed2707532e4360" title="To be (optionally) invoked before any start_*_ops(), supplies a factory for the util::sync_io::Asio_w...">transport::sync_io::Native_handle_sender::replace_event_wait_handles()</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad0773dd896a3b607299ba7e5e153972c">More...</a><br /></td></tr>
<tr class="separator:ad0773dd896a3b607299ba7e5e153972c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade5271c427a9ed514555482cc2509ed9"><td class="memTemplParams" colspan="2">template&lt;typename Task_err &gt; </td></tr>
<tr class="memitem:ade5271c427a9ed514555482cc2509ed9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9">async_accept</a> (<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a6a635d61ded08e27d9ce97c38942d6d0">Peer</a> *target_peer, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:ade5271c427a9ed514555482cc2509ed9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts background attempt at a peer connection being established, contingent on the user reporting (via <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern) the necessary native handle event(s); completion handler <code>on_done_func()</code> shall execute synchronously during such a future report.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9">More...</a><br /></td></tr>
<tr class="separator:ade5271c427a9ed514555482cc2509ed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a63bd81a0741e15220f7df1da4aca7f10"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a63bd81a0741e15220f7df1da4aca7f10">S_RESOURCE_TYPE_ID</a> = <a class="el" href="classipc_1_1util_1_1Shared__name.html#a48f20b7b54490aa10dc64081d34c55b2">Shared_name::ct</a>(&quot;sockStmAcc&quot;)</td></tr>
<tr class="memdesc:a63bd81a0741e15220f7df1da4aca7f10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shared_name relative-folder fragment (no separators) identifying this resource type.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a63bd81a0741e15220f7df1da4aca7f10">More...</a><br /></td></tr>
<tr class="separator:a63bd81a0741e15220f7df1da4aca7f10"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-types" name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a2bed5774f110f420bba39cdbdfa974ce"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a2bed5774f110f420bba39cdbdfa974ce">On_peer_accepted_func</a> = flow::async::Task_asio_err</td></tr>
<tr class="memdesc:a2bed5774f110f420bba39cdbdfa974ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for callback called on new peer-to-peer connection; or on unrecoverable error.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a2bed5774f110f420bba39cdbdfa974ce">More...</a><br /></td></tr>
<tr class="separator:a2bed5774f110f420bba39cdbdfa974ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:acba365c9bf40f0eff62e50ce18b90464"><td class="memItemLeft" align="right" valign="top">flow::util::Task_engine&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#acba365c9bf40f0eff62e50ce18b90464">m_nb_task_engine</a></td></tr>
<tr class="memdesc:acba365c9bf40f0eff62e50ce18b90464"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <code>Task_engine</code> for <code>m_ready_*</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#acba365c9bf40f0eff62e50ce18b90464">More...</a><br /></td></tr>
<tr class="separator:acba365c9bf40f0eff62e50ce18b90464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92204271b30221bbb46bea5a6dc5b20a"><td class="memItemLeft" align="right" valign="top">flow::util::Task_engine&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a92204271b30221bbb46bea5a6dc5b20a">m_ev_hndl_task_engine_unused</a></td></tr>
<tr class="memdesc:a92204271b30221bbb46bea5a6dc5b20a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <code>Task_engine</code> for <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad9546dcd26e1f0566f9662a88a1a6dbe" title="Descriptor waitable by outside event loop async-waits – storing the same Native_handle as (and thus b...">m_ev_wait_hndl</a>, unless it is replaced via <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad0773dd896a3b607299ba7e5e153972c" title="Analogous to transport::sync_io::Native_handle_sender::replace_event_wait_handles().">replace_event_wait_handles()</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a92204271b30221bbb46bea5a6dc5b20a">More...</a><br /></td></tr>
<tr class="separator:a92204271b30221bbb46bea5a6dc5b20a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80ab7afeab9753497d92a0af1f3f9610"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1util.html#aaf368acf8243bb25de3eef4e836c15de">util::Pipe_reader</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610">m_ready_reader</a></td></tr>
<tr class="memdesc:a80ab7afeab9753497d92a0af1f3f9610"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read-end of IPC-pipe used by <code>*this</code> user do detect that an acceptability-wait has completed.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610">More...</a><br /></td></tr>
<tr class="separator:a80ab7afeab9753497d92a0af1f3f9610"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada90b100aa98cd6ca5853d88f2fff993"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1util.html#a844d5ca9c17b672644fc8d9dbe758db0">util::Pipe_writer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ada90b100aa98cd6ca5853d88f2fff993">m_ready_writer</a></td></tr>
<tr class="memdesc:ada90b100aa98cd6ca5853d88f2fff993"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write-end of IPC-pipe together with <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ada90b100aa98cd6ca5853d88f2fff993">More...</a><br /></td></tr>
<tr class="separator:ada90b100aa98cd6ca5853d88f2fff993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9546dcd26e1f0566f9662a88a1a6dbe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1util_1_1sync__io_1_1Asio__waitable__native__handle.html">util::sync_io::Asio_waitable_native_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad9546dcd26e1f0566f9662a88a1a6dbe">m_ev_wait_hndl</a></td></tr>
<tr class="memdesc:ad9546dcd26e1f0566f9662a88a1a6dbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Descriptor waitable by outside event loop async-waits &ndash; storing the same <code>Native_handle</code> as (and thus being used to wait on events from) <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad9546dcd26e1f0566f9662a88a1a6dbe">More...</a><br /></td></tr>
<tr class="separator:ad9546dcd26e1f0566f9662a88a1a6dbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42946f27cfa62a6bb36a96d0cbb91b1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a42946f27cfa62a6bb36a96d0cbb91b1e">m_ev_wait_func</a></td></tr>
<tr class="memdesc:a42946f27cfa62a6bb36a96d0cbb91b1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function (set forever in <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a063d1a4161fb0f9340567b202bdcd83f" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before asyn...">start_accept_ops()</a>) through which we invoke the outside event loop's async-wait facility for descriptors/events relevant to our ops.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a42946f27cfa62a6bb36a96d0cbb91b1e">More...</a><br /></td></tr>
<tr class="separator:a42946f27cfa62a6bb36a96d0cbb91b1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd7b88291beb56fa3d7fe2230f49249b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a2bed5774f110f420bba39cdbdfa974ce">On_peer_accepted_func</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#afd7b88291beb56fa3d7fe2230f49249b">m_on_done_func_or_empty</a></td></tr>
<tr class="memdesc:afd7b88291beb56fa3d7fe2230f49249b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>on_done_func</code> from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> if one is pending; otherwise <code>.empty()</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#afd7b88291beb56fa3d7fe2230f49249b">More...</a><br /></td></tr>
<tr class="separator:afd7b88291beb56fa3d7fe2230f49249b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbb3682fbd1502d4fa3952133d956547"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#acbb3682fbd1502d4fa3952133d956547">m_target_err_code</a></td></tr>
<tr class="memdesc:acbb3682fbd1502d4fa3952133d956547"><td class="mdescLeft">&#160;</td><td class="mdescRight">Result of last <code>m_async_io.async_accept()</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#acbb3682fbd1502d4fa3952133d956547">More...</a><br /></td></tr>
<tr class="separator:acbb3682fbd1502d4fa3952133d956547"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9788dc2f0f1b4f8f9285402df02523f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87">Async_io_obj</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a9788dc2f0f1b4f8f9285402df02523f4">m_async_io</a></td></tr>
<tr class="memdesc:a9788dc2f0f1b4f8f9285402df02523f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This guy does all the work. We merely report <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> completion via <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ada90b100aa98cd6ca5853d88f2fff993" title="Write-end of IPC-pipe together with m_ready_reader.">m_ready_writer</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a9788dc2f0f1b4f8f9285402df02523f4">More...</a><br /></td></tr>
<tr class="separator:a9788dc2f0f1b4f8f9285402df02523f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:a03f0ad84b5d21920a58be5e95f12e69f"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a03f0ad84b5d21920a58be5e95f12e69f">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html">Native_socket_stream_acceptor</a> &amp;val)</td></tr>
<tr class="memdesc:a03f0ad84b5d21920a58be5e95f12e69f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html" title="sync_io-pattern counterpart to async-I/O-pattern transport::Native_socket_stream_acceptor.">Native_socket_stream_acceptor</a></code> to the given <code>ostream</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a03f0ad84b5d21920a58be5e95f12e69f">More...</a><br /></td></tr>
<tr class="separator:a03f0ad84b5d21920a58be5e95f12e69f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p ><code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern counterpart to async-I/O-pattern <a class="el" href="classipc_1_1transport_1_1Native__socket__stream__acceptor.html" title="A server object that binds to a Shared_name and listens for incoming Native_socket_stream connect att...">transport::Native_socket_stream_acceptor</a>. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespaceipc_1_1util_1_1sync__io.html" title="Contains common code, as well as important explanatory documentation in the following text,...">util::sync_io</a> doc header &ndash; describes the general <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern we are following. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1Native__socket__stream__acceptor.html" title="A server object that binds to a Shared_name and listens for incoming Native_socket_stream connect att...">transport::Native_socket_stream_acceptor</a> &ndash; generally all notes, other than the mechanism of how <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> reports readiness, in that doc header apply here.</dd></dl>
<p>As is generally the case when choosing <code>sync_io::X</code> versus <code>X</code>, we recommend using <code>X</code> due to it being easier. In this particular case (see below) there is no perf benefit to using <code>sync_io::X</code>, either, so the only reason to use <code>sync_io::X</code> in this case would be because you've got an old-school reactor event loop with a <code>poll()</code> or <code>epoll_wait()</code>, in which case the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> API may be easier to integrate.</p>
<h3>Internal implementation</h3>
<p >Normally this would not be in the public docs for this public-use class, but indulge us.</p>
<p >In perf-critical situations, such as the various <a class="el" href="classipc_1_1transport_1_1Blob__sender.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order sending ...">transport::Blob_sender</a> / <a class="el" href="classipc_1_1transport_1_1Blob__receiver.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order receivin...">transport::Blob_receiver</a> / etc. impls, typically <code>sync_io::X</code> contains the core implementation, then <code>X</code> adapts a <code>sync_io::X</code> <em>core</em> to provide background-thread-driven work and signaling of completion. We do not consider the present <code>X = <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html" title="sync_io-pattern counterpart to async-I/O-pattern transport::Native_socket_stream_acceptor.">Native_socket_stream_acceptor</a></code> to be perf-critical; as such as of this writing <a class="el" href="classipc_1_1transport_1_1Native__socket__stream__acceptor.html" title="A server object that binds to a Shared_name and listens for incoming Native_socket_stream connect att...">transport::Native_socket_stream_acceptor</a> has the logic, while <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html" title="sync_io-pattern counterpart to async-I/O-pattern transport::Native_socket_stream_acceptor.">sync_io::Native_socket_stream_acceptor</a> adapts it into the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern. Internally this is accomplished using an unnamed IPC-pipe, where an internal background thread W tickles said IPC-pipe which is waited-on by the user of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html" title="sync_io-pattern counterpart to async-I/O-pattern transport::Native_socket_stream_acceptor.">sync_io::Native_socket_stream_acceptor</a>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00058">58</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="aed1f13c93646250559c63790d1b30e87" name="aed1f13c93646250559c63790d1b30e87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed1f13c93646250559c63790d1b30e87">&#9670;&nbsp;</a></span>Async_io_obj</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87">ipc::transport::sync_io::Native_socket_stream_acceptor::Async_io_obj</a> =  <a class="el" href="classipc_1_1transport_1_1Native__socket__stream__acceptor.html">transport::Native_socket_stream_acceptor</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Useful for generic programming, the async-I/O-pattern counterpart to <code>*this</code> type. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00071">71</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<a id="a2bed5774f110f420bba39cdbdfa974ce" name="a2bed5774f110f420bba39cdbdfa974ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bed5774f110f420bba39cdbdfa974ce">&#9670;&nbsp;</a></span>On_peer_accepted_func</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a2bed5774f110f420bba39cdbdfa974ce">ipc::transport::sync_io::Native_socket_stream_acceptor::On_peer_accepted_func</a> =  flow::async::Task_asio_err</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for callback called on new peer-to-peer connection; or on unrecoverable error. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00178">178</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<a id="a6a635d61ded08e27d9ce97c38942d6d0" name="a6a635d61ded08e27d9ce97c38942d6d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a635d61ded08e27d9ce97c38942d6d0">&#9670;&nbsp;</a></span>Peer</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a6a635d61ded08e27d9ce97c38942d6d0">ipc::transport::sync_io::Native_socket_stream_acceptor::Peer</a> =  <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html#a850af22a95f27d8696b9b5bca15454b5">transport::Native_socket_stream::Sync_io_obj</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for type of target peer-socket objects targeted by <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00066">66</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<a id="aed9d578ac0c49fe2df4d1812060d7937" name="aed9d578ac0c49fe2df4d1812060d7937"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed9d578ac0c49fe2df4d1812060d7937">&#9670;&nbsp;</a></span>Sync_io_obj</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed9d578ac0c49fe2df4d1812060d7937">ipc::transport::sync_io::Native_socket_stream_acceptor::Sync_io_obj</a> =  <a class="el" href="classipc_1_1transport_1_1Null__peer.html">Null_peer</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>You may disregard. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00069">69</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a05f101c91a2c6b5c393b8036c5379939" name="a05f101c91a2c6b5c393b8036c5379939"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05f101c91a2c6b5c393b8036c5379939">&#9670;&nbsp;</a></span>Native_socket_stream_acceptor()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::sync_io::Native_socket_stream_acceptor::Native_socket_stream_acceptor </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>absolute_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>All notes from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API counterpart API apply. </p>
<p >However, additionally, per <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern, you'll need to invoke <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a063d1a4161fb0f9340567b202bdcd83f" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before asyn...">start_accept_ops()</a> (possibly preceded by <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad0773dd896a3b607299ba7e5e153972c" title="Analogous to transport::sync_io::Native_handle_sender::replace_event_wait_handles().">replace_event_wait_handles()</a>) before further real work.</p>
<p >If <code>err_code</code> is not null, and this emits truthy <code>*err_code</code>, then any use of <code>*this</code> other than destruction =&gt; undefined behavior.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API. </td></tr>
    <tr><td class="paramname">absolute_name</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API. </td></tr>
    <tr><td class="paramname">err_code</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00031">31</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html">native_socket_stream_acceptor.cpp</a>.</p>

<p class="reference">References <a class="el" href="asio__waitable__native__hndl_8cpp_source.html#l00065">ipc::util::sync_io::Asio_waitable_native_handle::assign()</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00219">m_ev_wait_hndl</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00207">m_ready_reader</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00213">m_ready_writer</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor_a05f101c91a2c6b5c393b8036c5379939_cgraph.svg" width="564" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a3f3c6aaad86a505961beb8e242fc1dff" name="a3f3c6aaad86a505961beb8e242fc1dff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f3c6aaad86a505961beb8e242fc1dff">&#9670;&nbsp;</a></span>absolute_name()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp; ipc::transport::sync_io::Native_socket_stream_acceptor::absolute_name </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>All notes from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API counterpart API apply. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00076">76</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html">native_socket_stream_acceptor.cpp</a>.</p>

<p class="reference">References <a class="el" href="native__socket__stream__acceptor_8cpp_source.html#l00465">ipc::transport::Native_socket_stream_acceptor::absolute_name()</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00239">m_async_io</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00081">operator&lt;&lt;()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor_a3f3c6aaad86a505961beb8e242fc1dff_cgraph.svg" width="384" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor_a3f3c6aaad86a505961beb8e242fc1dff_icgraph.svg" width="390" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ade5271c427a9ed514555482cc2509ed9" name="ade5271c427a9ed514555482cc2509ed9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade5271c427a9ed514555482cc2509ed9">&#9670;&nbsp;</a></span>async_accept()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Task_err &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream_acceptor::async_accept </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a6a635d61ded08e27d9ce97c38942d6d0">Peer</a> *&#160;</td>
          <td class="paramname"><em>target_peer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Starts background attempt at a peer connection being established, contingent on the user reporting (via <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern) the necessary native handle event(s); completion handler <code>on_done_func()</code> shall execute synchronously during such a future report. </p>
<p >Or perhaps in plainer English:</p><ol type="1">
<li>Call this.<ol type="a">
<li>It will synchronously invoke <a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24" title="In sync_io pattern, concrete type storing user-supplied function invoked by pattern-implementing ipc:...">util::sync_io::Event_wait_func</a> from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a063d1a4161fb0f9340567b202bdcd83f" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before asyn...">start_accept_ops()</a>, causing you to synchronously begin an async-wait for some status of some native handle (FD).</li>
</ol>
</li>
<li>Once that async-wait completes, call <code>(*on_active_ev_func)()</code> to report that fact to <code>*this</code>.<ol type="a">
<li>It will synchronously invoke <code>on_done_func()</code> saved from the present call, indicating via the <code>Error_code</code> arg success or failure. The semantics of this are equivalent to those of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a></code>.</li>
</ol>
</li>
</ol>
<dl class="section note"><dt>Note</dt><dd>There is no mode of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> wherein <code>*target_peer</code> is synchronously (immediately) available. Completion shall always be reported via <code>on_done_func()</code> after a mandatory async-wait. This is in contrast to perf-critical operations such as, say, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8b5fc40ddcdda4b7c78672e9b9dc53c2" title="Implements Blob_receiver API per contract.">Native_socket_stream::async_receive_blob()</a>.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_peer</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> API. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if op started; <code>false</code> if one is already in progress, and therefore this one is ignored (no-op). </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">247</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">References <a class="el" href="native__socket__stream__acceptor_8hpp_source.html#l00396">ipc::transport::Native_socket_stream_acceptor::async_accept()</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00239">m_async_io</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00226">m_ev_wait_func</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00219">m_ev_wait_hndl</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00233">m_on_done_func_or_empty</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00207">m_ready_reader</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00213">m_ready_writer</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00236">m_target_err_code</a>, <a class="el" href="ipc__core_2src_2ipc_2util_2detail_2util_8cpp_source.html#l00096">ipc::util::pipe_consume()</a>, <a class="el" href="ipc__core_2src_2ipc_2util_2detail_2util_8cpp_source.html#l00067">ipc::util::pipe_produce()</a>, and <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297afe29343445a7bf167cc186a44bd2c6ed">ipc::transport::error::S_OBJECT_SHUTDOWN_ABORTED_COMPLETION_HANDLER</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor_ade5271c427a9ed514555482cc2509ed9_cgraph.svg" width="814" height="195"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ad0773dd896a3b607299ba7e5e153972c" name="ad0773dd896a3b607299ba7e5e153972c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0773dd896a3b607299ba7e5e153972c">&#9670;&nbsp;</a></span>replace_event_wait_handles()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Create_ev_wait_hndl_func &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream_acceptor::replace_event_wait_handles </td>
          <td>(</td>
          <td class="paramtype">const Create_ev_wait_hndl_func &amp;&#160;</td>
          <td class="paramname"><em>create_ev_wait_hndl_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Analogous to <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#abe6227dfa077571d6eed2707532e4360" title="To be (optionally) invoked before any start_*_ops(), supplies a factory for the util::sync_io::Asio_w...">transport::sync_io::Native_handle_sender::replace_event_wait_handles()</a>. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Create_ev_wait_hndl_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">create_ev_wait_hndl_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00310">310</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">References <a class="el" href="asio__waitable__native__hndl_8cpp_source.html#l00065">ipc::util::sync_io::Asio_waitable_native_handle::assign()</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00226">m_ev_wait_func</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00219">m_ev_wait_hndl</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor_ad0773dd896a3b607299ba7e5e153972c_cgraph.svg" width="564" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a063d1a4161fb0f9340567b202bdcd83f" name="a063d1a4161fb0f9340567b202bdcd83f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a063d1a4161fb0f9340567b202bdcd83f">&#9670;&nbsp;</a></span>start_accept_ops()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Event_wait_func_t &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream_acceptor::start_accept_ops </td>
          <td>(</td>
          <td class="paramtype">Event_wait_func_t &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets up the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern interaction between <code>*this</code> and the user's event loop; required before <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> will work (as opposed to no-op/return <code>false</code>). </p>
<p ><code>ev_wait_func()</code> &ndash; with signature matching <a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24" title="In sync_io pattern, concrete type storing user-supplied function invoked by pattern-implementing ipc:...">util::sync_io::Event_wait_func</a> &ndash; is a key function memorized by <code>*this</code>. It shall be invoked by <code>*this</code> operations when some op cannot complete synchronously and requires a certain event (readable/writable) to be active on a certain native-handle.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24" title="In sync_io pattern, concrete type storing user-supplied function invoked by pattern-implementing ipc:...">util::sync_io::Event_wait_func</a> doc header for useful and complete instructions on how to write an <code>ev_wait_func()</code> properly. Doing so correctly is the crux of using the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern.</dd></dl>
<p>This is a standard <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern API per <a class="el" href="namespaceipc_1_1util_1_1sync__io.html" title="Contains common code, as well as important explanatory documentation in the following text,...">util::sync_io</a> doc header.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Event_wait_func_t</td><td>Function type matching <a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24" title="In sync_io pattern, concrete type storing user-supplied function invoked by pattern-implementing ipc:...">util::sync_io::Event_wait_func</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> if this has already been invoked; no-op logging aside. <code>true</code> otherwise. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00294">294</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00226">m_ev_wait_func</a>.</p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a03f0ad84b5d21920a58be5e95f12e69f" name="a03f0ad84b5d21920a58be5e95f12e69f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03f0ad84b5d21920a58be5e95f12e69f">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html">Native_socket_stream_acceptor</a> &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html" title="sync_io-pattern counterpart to async-I/O-pattern transport::Native_socket_stream_acceptor.">Native_socket_stream_acceptor</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00081">81</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html">native_socket_stream_acceptor.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00076">absolute_name()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor_a03f0ad84b5d21920a58be5e95f12e69f_cgraph.svg" width="596" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a9788dc2f0f1b4f8f9285402df02523f4" name="a9788dc2f0f1b4f8f9285402df02523f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9788dc2f0f1b4f8f9285402df02523f4">&#9670;&nbsp;</a></span>m_async_io</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#aed1f13c93646250559c63790d1b30e87">Async_io_obj</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_async_io</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This guy does all the work. We merely report <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> completion via <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ada90b100aa98cd6ca5853d88f2fff993" title="Write-end of IPC-pipe together with m_ready_reader.">m_ready_writer</a>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00239">239</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00076">absolute_name()</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>.</p>

</div>
</div>
<a id="a92204271b30221bbb46bea5a6dc5b20a" name="a92204271b30221bbb46bea5a6dc5b20a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92204271b30221bbb46bea5a6dc5b20a">&#9670;&nbsp;</a></span>m_ev_hndl_task_engine_unused</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::util::Task_engine ipc::transport::sync_io::Native_socket_stream_acceptor::m_ev_hndl_task_engine_unused</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The <code>Task_engine</code> for <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad9546dcd26e1f0566f9662a88a1a6dbe" title="Descriptor waitable by outside event loop async-waits – storing the same Native_handle as (and thus b...">m_ev_wait_hndl</a>, unless it is replaced via <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ad0773dd896a3b607299ba7e5e153972c" title="Analogous to transport::sync_io::Native_handle_sender::replace_event_wait_handles().">replace_event_wait_handles()</a>. </p>
<p >This is to fulfill the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00198">198</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<a id="a42946f27cfa62a6bb36a96d0cbb91b1e" name="a42946f27cfa62a6bb36a96d0cbb91b1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42946f27cfa62a6bb36a96d0cbb91b1e">&#9670;&nbsp;</a></span>m_ev_wait_func</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_ev_wait_func</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Function (set forever in <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a063d1a4161fb0f9340567b202bdcd83f" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before asyn...">start_accept_ops()</a>) through which we invoke the outside event loop's async-wait facility for descriptors/events relevant to our ops. </p>
<p >See <a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24" title="In sync_io pattern, concrete type storing user-supplied function invoked by pattern-implementing ipc:...">util::sync_io::Event_wait_func</a> doc header for a refresher on this mechanic. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00226">226</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00310">replace_event_wait_handles()</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00294">start_accept_ops()</a>.</p>

</div>
</div>
<a id="ad9546dcd26e1f0566f9662a88a1a6dbe" name="ad9546dcd26e1f0566f9662a88a1a6dbe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9546dcd26e1f0566f9662a88a1a6dbe">&#9670;&nbsp;</a></span>m_ev_wait_hndl</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1util_1_1sync__io_1_1Asio__waitable__native__handle.html">util::sync_io::Asio_waitable_native_handle</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_ev_wait_hndl</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Descriptor waitable by outside event loop async-waits &ndash; storing the same <code>Native_handle</code> as (and thus being used to wait on events from) <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00219">219</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>, <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00031">Native_socket_stream_acceptor()</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00310">replace_event_wait_handles()</a>.</p>

</div>
</div>
<a id="acba365c9bf40f0eff62e50ce18b90464" name="acba365c9bf40f0eff62e50ce18b90464"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acba365c9bf40f0eff62e50ce18b90464">&#9670;&nbsp;</a></span>m_nb_task_engine</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::util::Task_engine ipc::transport::sync_io::Native_socket_stream_acceptor::m_nb_task_engine</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The <code>Task_engine</code> for <code>m_ready_*</code>. </p>
<p >It is necessary to construct those pipe-end objects, but we never use that guy's <code>-&gt;async_*()</code> APIs &ndash; only non-blocking operations, essentially leveraging boost.asio's portable transmission APIs but not its actual, um, async-I/O abilities in this case. Accordingly we never load any tasks onto <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#acba365c9bf40f0eff62e50ce18b90464" title="The Task_engine for m_ready_*.">m_nb_task_engine</a> and certainly never <code>.run()</code> (or <code>.poll()</code> or ...) it.</p>
<p >In the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> pattern the user's outside event loop is responsible for awaiting readability/writability of a guy like <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a> via our exporting of its <code>.native_handle()</code>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00191">191</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<a id="afd7b88291beb56fa3d7fe2230f49249b" name="afd7b88291beb56fa3d7fe2230f49249b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd7b88291beb56fa3d7fe2230f49249b">&#9670;&nbsp;</a></span>m_on_done_func_or_empty</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a2bed5774f110f420bba39cdbdfa974ce">On_peer_accepted_func</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_on_done_func_or_empty</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code>on_done_func</code> from <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ade5271c427a9ed514555482cc2509ed9" title="Starts background attempt at a peer connection being established, contingent on the user reporting (v...">async_accept()</a> if one is pending; otherwise <code>.empty()</code>. </p>
<p >We maybe could have kept it as a lambda capture only, but this way it can double as a guard against allowing 2+ async-accepts (which goes against the spirit of what <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern objects provide). </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00233">233</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>.</p>

</div>
</div>
<a id="a80ab7afeab9753497d92a0af1f3f9610" name="a80ab7afeab9753497d92a0af1f3f9610"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80ab7afeab9753497d92a0af1f3f9610">&#9670;&nbsp;</a></span>m_ready_reader</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1util.html#aaf368acf8243bb25de3eef4e836c15de">util::Pipe_reader</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_ready_reader</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Read-end of IPC-pipe used by <code>*this</code> user do detect that an acceptability-wait has completed. </p>
<p >The signal byte is read out of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a>, making it empty again (the steady-state before the next time acceptability-wait begins, and a byte is written to it making it non-empty).</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#ada90b100aa98cd6ca5853d88f2fff993" title="Write-end of IPC-pipe together with m_ready_reader.">m_ready_writer</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00207">207</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00031">Native_socket_stream_acceptor()</a>.</p>

</div>
</div>
<a id="ada90b100aa98cd6ca5853d88f2fff993" name="ada90b100aa98cd6ca5853d88f2fff993"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada90b100aa98cd6ca5853d88f2fff993">&#9670;&nbsp;</a></span>m_ready_writer</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1util.html#a844d5ca9c17b672644fc8d9dbe758db0">util::Pipe_writer</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_ready_writer</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write-end of IPC-pipe together with <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a>. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__acceptor.html#a80ab7afeab9753497d92a0af1f3f9610" title="Read-end of IPC-pipe used by *this user do detect that an acceptability-wait has completed.">m_ready_reader</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00213">213</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>, and <a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html#l00031">Native_socket_stream_acceptor()</a>.</p>

</div>
</div>
<a id="acbb3682fbd1502d4fa3952133d956547" name="acbb3682fbd1502d4fa3952133d956547"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbb3682fbd1502d4fa3952133d956547">&#9670;&nbsp;</a></span>m_target_err_code</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> ipc::transport::sync_io::Native_socket_stream_acceptor::m_target_err_code</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Result of last <code>m_async_io.async_accept()</code>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00236">236</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00247">async_accept()</a>.</p>

</div>
</div>
<a id="a63bd81a0741e15220f7df1da4aca7f10" name="a63bd81a0741e15220f7df1da4aca7f10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63bd81a0741e15220f7df1da4aca7f10">&#9670;&nbsp;</a></span>S_RESOURCE_TYPE_ID</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> ipc::transport::sync_io::Native_socket_stream_acceptor::S_RESOURCE_TYPE_ID = <a class="el" href="classipc_1_1util_1_1Shared__name.html#a48f20b7b54490aa10dc64081d34c55b2">Shared_name::ct</a>(&quot;sockStmAcc&quot;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Shared_name relative-folder fragment (no separators) identifying this resource type. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html#l00076">76</a> of file <a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>transport/sync_io/<a class="el" href="sync__io_2native__socket__stream__acceptor_8hpp_source.html">native_socket_stream_acceptor.hpp</a></li>
<li>transport/sync_io/<a class="el" href="sync__io_2native__socket__stream__acceptor_8cpp_source.html">native_socket_stream_acceptor.cpp</a></li>
<li>transport/<a class="el" href="transport__fwd_8hpp_source.html">transport_fwd.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu May 2 2024 23:56:39 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
